package com.neusoft.chenhanhua.d0924;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.Connection;

public class Jdbclxi {
    public static void main(String[] args) {
    	/*	步骤，不管是连哪个数据库都一样
    	 * 		1、将Jar引入到项目中
    	 * 		2、获取数据库连接java.sql.Connection
    	 * 			1、准备数据库用户名、密码、url、driver
    	 * 			2、加载驱动类到虚拟机中
    	 * 			3、通过DriverManager进行数据库连接，不同数据库有包名区别
    	 * 		3、准备SQL命令
    	 * 		4、通过数据库连接conn获取事务java.sql.Statement对象st
    	 * 			createStatement()：创建连接，不安全，容易被sql注入攻击
    	 * 			prepareStatement(sql)：创建预连接，可以预防sql注入攻击
    	 * 		5、通过st对象执行sql命令
    	 * 			1、增删改
    	 * 				Statement
    	 * 					executeUpdate(sql)：返回执行成功的总数，一条都没有成功，则返回0
    	 * 				prepareStatement
    	 * 					executeUpdate()
    	 * 				判断是否执行成功
    	 * 			2、查询
    	 * 				Statement
    	 * 					executeQuery(sql)：
    	 * 				prepareStatement
    	 * 					executeQuery()：
    	 * 				处理结果集
    	 * 		6、关闭数据库连接
    	 */
    	//1、将Jar引入到项目中
    	//2、获取数据库连接java.sql.Connection
    	Connection conn=null;
          //准备数据库用户名、密码、url、driver
    	String username="root";
    	String password="root";
    	//协议://地址:端口号/数据库名?连接属性设置
    	String url="jdbc:mysql://localhost:3306/mall?userUnicode=true&characterEncoding=utf-8";
    	String driver ="com.mysql.jdbc.Driver";
    	Statement st=null;
    	ResultSet rs=null;
    	try {
    		//2、加载驱动类到虚拟机中
			Class.forName(driver);
			//3、通过DriverManager进行数据库连接，不同数据库有包名区别
			conn = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
    	//3、准备SQL命令
    	String sql="select * from ums_admin";
    	try {
    		//4、通过数据库连接conn获取事务java.sql.Statement对象st
			 st=conn.createStatement();
			//执行sql命令
			 rs=st.executeQuery(sql);
			//处理查询结果集
			ArrayList<Admin>  al=new ArrayList<>();
			while (rs.next()) {
				Admin admin=new Admin();
				admin.setId(rs.getInt("id"));
				admin.setUsername(rs.getString("username"));
				admin.setPassword(rs.getString("password"));
				admin.setIcon(rs.getString("icon"));
				admin.setNick_name(rs.getString("nick_name"));
				admin.setNote(rs.getString("note"));
				admin.setCreate_time(rs.getString("create_time"));
				admin.setLogin_time(rs.getString("login_time"));
				admin.setStatus(rs.getString("status"));
				al.add(admin);
			}
			//结果集的遍历
			for (int i = 0; i < al.size(); i++) {
				System.out.println(al.get(i));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			if(rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(st != null) {
				try {
					st.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		}
	}
}
